<?php

namespace app\common\library;

/**
 * 本地文件驱动
 * Class Local
 * @package app\common\library\
 */
class Local extends Server
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 上传图片文件
     * @return array|bool
     */
    public function upload()
    {

        // 上传目录
      $uplodDir = WEB_PATH . 'uploads/temp';
	   
	      
		
		 
        // 验证文件并上传
        $info = $this->file->validate(['size' => 1000 * 1024 * 1024])
            ->move($uplodDir, $this->fileName);
        if (empty($info)) {
            $this->error = $this->file->getError();
            return false;
        }
        
        return true;
        // $nameArr = explode('.',$this->fileName);
        // //提交到资源服务器
        // $result = commitImage($this->fileName, $nameArr[0]);
		
        // return $result;
    }
	
	    /*
    *   php访问url路径，post请求
    *
    *   durl   路径url
    *   post_data   array()   post参数数据
    */
    public function curl_file_post_contents($durl, $post_data){
        // header传送格式
        $headers = array(
            "token:1111111111111",
            "over_time:22222222222",
        );
        //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, $durl);
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, false);
        //设置获取的信息以文件流的形式返回，而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, true);
        // 设置post请求参数
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
        // 设置超时限制防止死循环    
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
        // CURLINFO_HEADER_OUT选项可以拿到请求头信息
        curl_setopt($curl, CURLINFO_HEADER_OUT, true);
        // 不验证SSL
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        //执行命令
        $data = curl_exec($curl);
        // 打印请求头信息
//        echo curl_getinfo($curl, CURLINFO_HEADER_OUT);
        //关闭URL请求
        curl_close($curl);
        //显示获得的数据
        return $data;
    }
	
	    /**
     *通过curl传输文件到远程服务器
     *  *
     * @param string $url 推送的远程服务器地址
     * @param string $file 要推送的文件的路径
     * @param $name
     * @return array|bool|string
     */
    public function post_files($url, $file, $name)
    {
        $file = realpath($file);
        $data = ['file' => new \CURLFile($file), 'name' => $name];
        $curl = curl_init();
        // 设置url路径
        curl_setopt($curl, CURLOPT_URL, $url);
        //设置获取的信息以文件流的形式返回，而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, true);
        // 设置post请求参数
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        // CURLINFO_HEADER_OUT选项可以拿到请求头信息
        curl_setopt($curl, CURLINFO_HEADER_OUT, true);
        // 不验证SSL
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        //执行命令
        $response = curl_exec($curl);
        // 打印请求头信息
//        echo curl_getinfo($curl, CURLINFO_HEADER_OUT);
        // 关闭连接
        curl_close($curl);
        // 返回数据
        return $response;
    }

    /**
     * 删除文件
     * @param $fileName
     * @return bool|mixed
     */
    public function delete($fileName)
    {
        // 文件所在目录
        $filePath = WEB_PATH . "uploads/{$fileName}";
        return !file_exists($filePath) ?: unlink($filePath);
    }

    /**
     * 返回文件路径
     * @return mixed
     */
    public function getFileName()
    {
        return $this->fileName;
    }
}
